package com.sunducation.co.pw.map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * @description: HashMap遍历取值的方式及性能比较
 * 这三个类HashMapTest,HashMapTest1,HashMapTest2，不能放在一起，不然运行的结果会跟调用的遍历的顺序有关，所以才分开成三个类来测试
 * 同一个类，多次运行耗时不一样，可能跟运行时散列的内存位置有关
 * @author:chenwenbiao
 * @createTime:2019/7/9 16:48
 * @version：1.0
 **/
public class HashMapTest3 {

    /**
     * 使用entrySet方式遍历
     */
    public static long entrySet(){
        HashMap<String, String> map = new HashMap<String, String>();
        for (int i = 0; i < 1000000; i++) {
            map.put("" + i, "keySet" + i);
        }

        long startTime = System.currentTimeMillis();
        Iterator<Map.Entry<String, String>> entryKeyIterator = map.entrySet().iterator();
        while (entryKeyIterator.hasNext()) {
            Map.Entry<String, String> e = entryKeyIterator.next();
//            System.out.println("3:"+ e.getValue());
        }
        return System.currentTimeMillis() - startTime;
    }

    public static void main(String[] args) {
        long entrySetSpentTimes = entrySet();
        System.out.println("entry set spent times:" + entrySetSpentTimes);
    }
} 